<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    
    <title>机器指令编程 | Bian&#39;s blog</title>
    <meta name="viewport" content="width=device-width,minimum-scale=1">
    <meta name="generator" content="Hugo 0.75.1" />
    
    
      <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
    

    
    
      <link href="/homework/dist/css/app.4fc0b62e4b82c997bb0041217cd6b979.css" rel="stylesheet">
    

    

    
      

    

    
    
    <meta property="og:title" content="机器指令编程" />
<meta property="og:description" content="实验报告pdf版 实验报告 实验报告blog版 任务一 （1）打开网页 http://doctord.webhop.net/Courses/UNH/CS216/PIPPINGuide.html ，然后输入 Program 1：Add 2 number （2）点step after step。观察并回答下面问题： 1.PC，IR 寄存器的作用。 PC:
程序计数器（Program Counter），用于存放下一条指令所在单元的地址。
IR:
①用来存放后续指令地址
②保存当前正在执行的一条指令
③保存将被存储的下一个数据字节的地址
④保存当前CPU所访问的主存单元的地址
当执行一条指令时，首先需要根据PC中存放的指令地址，将指令由内存取到IR中，此过程称为“取指令”。与此同时，PC中的地址或自动加1或由转移指针给出下一条指令的地址。
2.ACC 寄存器的全称与作用。 ACC： 累加器（accumulator），用来储存计算产生的中间结果。
3.用“LOD #3”指令的执行过程，解释Fetch-Execute周期。 &ndash;&gt; 根据PC中的地址从RAM取出指令LOD #3
&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码，无需取址，数字3传入MUX
&ndash;&gt; 将MUX中的数字3传入ALU之后传入ACC
&ndash;&gt; PC&#43;2
4.用“ADD W” 指令的执行过程，解释Fetch-Execute周期。 &ndash;&gt; 根据PC的地址从RAM取出指令ADD W
&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码
&ndash;&gt; ALU从ACC中取值
&ndash;&gt; IR再次访问RAM中的W，从W中取值
&ndash;&gt; 将W的值读入ALU
&ndash;&gt; ALU执行加法，结果传入ACC
&ndash;&gt; PC&#43;2
5.“LOD #3” 与 “ADD W” 指令的执行在Fetch-Execute周期级别，有什么不同。 “LOD #3”只需访问RAM一次,而“ADD W”需要访问RAM两次
（3）点击“Binary”,观察回答下面问题 1.写出指令 “LOD #7” 的二进制形式，按指令结构，解释每部分的含义。 00010100 00000111" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://Hugh488.gitee.io/homework/posts/machinecode/" />
<meta property="article:published_time" content="2020-10-27T18:33:11+08:00" />
<meta property="article:modified_time" content="2020-10-27T18:33:11+08:00" />
<meta itemprop="name" content="机器指令编程">
<meta itemprop="description" content="实验报告pdf版 实验报告 实验报告blog版 任务一 （1）打开网页 http://doctord.webhop.net/Courses/UNH/CS216/PIPPINGuide.html ，然后输入 Program 1：Add 2 number （2）点step after step。观察并回答下面问题： 1.PC，IR 寄存器的作用。 PC:
程序计数器（Program Counter），用于存放下一条指令所在单元的地址。
IR:
①用来存放后续指令地址
②保存当前正在执行的一条指令
③保存将被存储的下一个数据字节的地址
④保存当前CPU所访问的主存单元的地址
当执行一条指令时，首先需要根据PC中存放的指令地址，将指令由内存取到IR中，此过程称为“取指令”。与此同时，PC中的地址或自动加1或由转移指针给出下一条指令的地址。
2.ACC 寄存器的全称与作用。 ACC： 累加器（accumulator），用来储存计算产生的中间结果。
3.用“LOD #3”指令的执行过程，解释Fetch-Execute周期。 &ndash;&gt; 根据PC中的地址从RAM取出指令LOD #3
&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码，无需取址，数字3传入MUX
&ndash;&gt; 将MUX中的数字3传入ALU之后传入ACC
&ndash;&gt; PC&#43;2
4.用“ADD W” 指令的执行过程，解释Fetch-Execute周期。 &ndash;&gt; 根据PC的地址从RAM取出指令ADD W
&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码
&ndash;&gt; ALU从ACC中取值
&ndash;&gt; IR再次访问RAM中的W，从W中取值
&ndash;&gt; 将W的值读入ALU
&ndash;&gt; ALU执行加法，结果传入ACC
&ndash;&gt; PC&#43;2
5.“LOD #3” 与 “ADD W” 指令的执行在Fetch-Execute周期级别，有什么不同。 “LOD #3”只需访问RAM一次,而“ADD W”需要访问RAM两次
（3）点击“Binary”,观察回答下面问题 1.写出指令 “LOD #7” 的二进制形式，按指令结构，解释每部分的含义。 00010100 00000111">
<meta itemprop="datePublished" content="2020-10-27T18:33:11+08:00" />
<meta itemprop="dateModified" content="2020-10-27T18:33:11+08:00" />
<meta itemprop="wordCount" content="201">



<meta itemprop="keywords" content="" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="机器指令编程"/>
<meta name="twitter:description" content="实验报告pdf版 实验报告 实验报告blog版 任务一 （1）打开网页 http://doctord.webhop.net/Courses/UNH/CS216/PIPPINGuide.html ，然后输入 Program 1：Add 2 number （2）点step after step。观察并回答下面问题： 1.PC，IR 寄存器的作用。 PC:
程序计数器（Program Counter），用于存放下一条指令所在单元的地址。
IR:
①用来存放后续指令地址
②保存当前正在执行的一条指令
③保存将被存储的下一个数据字节的地址
④保存当前CPU所访问的主存单元的地址
当执行一条指令时，首先需要根据PC中存放的指令地址，将指令由内存取到IR中，此过程称为“取指令”。与此同时，PC中的地址或自动加1或由转移指针给出下一条指令的地址。
2.ACC 寄存器的全称与作用。 ACC： 累加器（accumulator），用来储存计算产生的中间结果。
3.用“LOD #3”指令的执行过程，解释Fetch-Execute周期。 &ndash;&gt; 根据PC中的地址从RAM取出指令LOD #3
&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码，无需取址，数字3传入MUX
&ndash;&gt; 将MUX中的数字3传入ALU之后传入ACC
&ndash;&gt; PC&#43;2
4.用“ADD W” 指令的执行过程，解释Fetch-Execute周期。 &ndash;&gt; 根据PC的地址从RAM取出指令ADD W
&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码
&ndash;&gt; ALU从ACC中取值
&ndash;&gt; IR再次访问RAM中的W，从W中取值
&ndash;&gt; 将W的值读入ALU
&ndash;&gt; ALU执行加法，结果传入ACC
&ndash;&gt; PC&#43;2
5.“LOD #3” 与 “ADD W” 指令的执行在Fetch-Execute周期级别，有什么不同。 “LOD #3”只需访问RAM一次,而“ADD W”需要访问RAM两次
（3）点击“Binary”,观察回答下面问题 1.写出指令 “LOD #7” 的二进制形式，按指令结构，解释每部分的含义。 00010100 00000111"/>

	
  </head>

  <body class="ma0 avenir bg-near-white">

    
   
  

  <header>
    <div class="bg-black">
      <nav class="pv3 ph3 ph4-ns" role="navigation">
  <div class="flex-l justify-between items-center center">
    <a href="/homework/" class="f3 fw2 hover-white no-underline white-90 dib">
      
        Bian&#39;s blog
      
    </a>
    <div class="flex-l items-center">
      

      
      















    </div>
  </div>
</nav>

    </div>
  </header>



    <main class="pb7" role="main">
      
  
  <article class="flex-l flex-wrap justify-between mw8 center ph3">
    <header class="mt4 w-100">
      <aside class="instapaper_ignoref b helvetica tracked">
          
        POSTS
      </aside>
      




  <div id="sharing" class="mt3">

    
    <a href="https://www.facebook.com/sharer.php?u=https://Hugh488.gitee.io/homework/posts/machinecode/" class="facebook no-underline" aria-label="share on Facebook">
      <svg height="32px"  style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M28.765,50.32h6.744V33.998h4.499l0.596-5.624h-5.095  l0.007-2.816c0-1.466,0.14-2.253,2.244-2.253h2.812V17.68h-4.5c-5.405,0-7.307,2.729-7.307,7.317v3.377h-3.369v5.625h3.369V50.32z   M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;"/></svg>

    </a>

    
    
    <a href="https://twitter.com/share?url=https://Hugh488.gitee.io/homework/posts/machinecode/&amp;text=%e6%9c%ba%e5%99%a8%e6%8c%87%e4%bb%a4%e7%bc%96%e7%a8%8b" class="twitter no-underline" aria-label="share on Twitter">
      <svg height="32px"  style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M37.167,22.283c-2.619,0.953-4.274,3.411-4.086,6.101  l0.063,1.038l-1.048-0.127c-3.813-0.487-7.145-2.139-9.974-4.915l-1.383-1.377l-0.356,1.017c-0.754,2.267-0.272,4.661,1.299,6.271  c0.838,0.89,0.649,1.017-0.796,0.487c-0.503-0.169-0.943-0.296-0.985-0.233c-0.146,0.149,0.356,2.076,0.754,2.839  c0.545,1.06,1.655,2.097,2.871,2.712l1.027,0.487l-1.215,0.021c-1.173,0-1.215,0.021-1.089,0.467  c0.419,1.377,2.074,2.839,3.918,3.475l1.299,0.444l-1.131,0.678c-1.676,0.976-3.646,1.526-5.616,1.568  C19.775,43.256,19,43.341,19,43.405c0,0.211,2.557,1.397,4.044,1.864c4.463,1.377,9.765,0.783,13.746-1.568  c2.829-1.673,5.657-5,6.978-8.221c0.713-1.716,1.425-4.851,1.425-6.354c0-0.975,0.063-1.102,1.236-2.267  c0.692-0.678,1.341-1.419,1.467-1.631c0.21-0.403,0.188-0.403-0.88-0.043c-1.781,0.636-2.033,0.551-1.152-0.402  c0.649-0.678,1.425-1.907,1.425-2.267c0-0.063-0.314,0.042-0.671,0.233c-0.377,0.212-1.215,0.53-1.844,0.72l-1.131,0.361l-1.027-0.7  c-0.566-0.381-1.361-0.805-1.781-0.932C39.766,21.902,38.131,21.944,37.167,22.283z M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4  s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/></svg>

    </a>

    
    <a href="https://www.linkedin.com/shareArticle?mini=true&amp;url=https://Hugh488.gitee.io/homework/posts/machinecode/&amp;title=%e6%9c%ba%e5%99%a8%e6%8c%87%e4%bb%a4%e7%bc%96%e7%a8%8b" class="linkedin no-underline" aria-label="share on LinkedIn">
      <svg  height="32px"  style="enable-background:new 0 0 65 65;" version="1.1" viewBox="0 0 65 65" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <path d="M50.837,48.137V36.425c0-6.275-3.35-9.195-7.816-9.195  c-3.604,0-5.219,1.983-6.119,3.374V27.71h-6.79c0.09,1.917,0,20.427,0,20.427h6.79V36.729c0-0.609,0.044-1.219,0.224-1.655  c0.49-1.22,1.607-2.483,3.482-2.483c2.458,0,3.44,1.873,3.44,4.618v10.929H50.837z M22.959,24.922c2.367,0,3.842-1.57,3.842-3.531  c-0.044-2.003-1.475-3.528-3.797-3.528s-3.841,1.524-3.841,3.528c0,1.961,1.474,3.531,3.753,3.531H22.959z M34,64  C17.432,64,4,50.568,4,34C4,17.431,17.432,4,34,4s30,13.431,30,30C64,50.568,50.568,64,34,64z M26.354,48.137V27.71h-6.789v20.427  H26.354z" style="fill-rule:evenodd;clip-rule:evenodd;fill:;"/>
</svg>

    </a>
  </div>


      <h1 class="f1 athelas mt3 mb1">机器指令编程</h1>
      
      
      <time class="f6 mv4 dib tracked" datetime="2020-10-27T18:33:11+08:00">October 27, 2020</time>

      
      
    </header>
    <div class="nested-copy-line-height lh-copy serif f4 nested-links nested-img mid-gray pr4-l w-two-thirds-l"><h1 id="实验报告pdf版">实验报告pdf版</h1>
<h2 id="实验报告picmachinepdf"><a href="../pic/machine.pdf">实验报告</a></h2>
<h1 id="实验报告blog版">实验报告blog版</h1>
<h1 id="任务一">任务一</h1>
<h2 id="1打开网页-httpdoctordwebhopnetcoursesunhcs216pippinguidehtmlhttpdoctordwebhopnetcoursesunhcs216pippinguidehtml-然后输入-program-1add-2-number">（1）打开网页 <a href="http://doctord.webhop.net/Courses/UNH/CS216/PIPPINGuide.html">http://doctord.webhop.net/Courses/UNH/CS216/PIPPINGuide.html</a> ，然后输入 Program 1：Add 2 number</h2>
<p><img src="../pic/add1.png" alt=""></p>
<h2 id="2点step-after-step观察并回答下面问题">（2）点step after step。观察并回答下面问题：</h2>
<p><img src="../pic/add2.png" alt=""></p>
<h3 id="1pcir-寄存器的作用">1.PC，IR 寄存器的作用。</h3>
<p>PC:</p>
<p>程序计数器（Program Counter），用于存放下一条指令所在单元的地址。</p>
<p>IR:</p>
<p>①用来存放后续指令地址</p>
<p>②保存当前正在执行的一条指令</p>
<p>③保存将被存储的下一个数据字节的地址</p>
<p>④保存当前CPU所访问的主存单元的地址</p>
<p>当执行一条指令时，首先需要根据PC中存放的指令地址，将指令由内存取到IR中，此过程称为“取指令”。与此同时，PC中的地址或自动加1或由转移指针给出下一条指令的地址。</p>
<h3 id="2acc-寄存器的全称与作用">2.ACC 寄存器的全称与作用。</h3>
<p>ACC： 累加器（accumulator），用来储存计算产生的中间结果。</p>
<h3 id="3用lod-3指令的执行过程解释fetch-execute周期">3.用“LOD #3”指令的执行过程，解释Fetch-Execute周期。</h3>
<p>&ndash;&gt; 根据PC中的地址从RAM取出指令LOD #3</p>
<p>&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码，无需取址，数字3传入MUX</p>
<p>&ndash;&gt; 将MUX中的数字3传入ALU之后传入ACC</p>
<p>&ndash;&gt; PC+2</p>
<h3 id="4用add-w-指令的执行过程解释fetch-execute周期">4.用“ADD W” 指令的执行过程，解释Fetch-Execute周期。</h3>
<p>&ndash;&gt; 根据PC的地址从RAM取出指令ADD W</p>
<p>&ndash;&gt; 指令传入IR，再把IR中的指令交给Decoder译码</p>
<p>&ndash;&gt; ALU从ACC中取值</p>
<p>&ndash;&gt; IR再次访问RAM中的W，从W中取值</p>
<p>&ndash;&gt; 将W的值读入ALU</p>
<p>&ndash;&gt; ALU执行加法，结果传入ACC</p>
<p>&ndash;&gt; PC+2</p>
<h3 id="5lod-3-与-add-w-指令的执行在fetch-execute周期级别有什么不同">5.“LOD #3” 与 “ADD W” 指令的执行在Fetch-Execute周期级别，有什么不同。</h3>
<p>“LOD #3”只需访问RAM一次,而“ADD W”需要访问RAM两次</p>
<h2 id="3点击binary观察回答下面问题">（3）点击“Binary”,观察回答下面问题</h2>
<p><img src="../pic/add.png" alt=""></p>
<h3 id="1写出指令-lod-7-的二进制形式按指令结构解释每部分的含义">1.写出指令 “LOD #7” 的二进制形式，按指令结构，解释每部分的含义。</h3>
<p>00010100 00000111</p>
<p>操作码+操作数</p>
<h3 id="2解释-ram-的地址">2.解释 RAM 的地址。</h3>
<p>程序和数据都暂时存放在RAM中，一旦关闭电源或发生断电，其中的程序和数据就会丢失。</p>
<h3 id="3该机器cpu是几位的按累加器的位数">3.该机器CPU是几位的？（按累加器的位数）</h3>
<p>16位。</p>
<h3 id="4写出该程序对应的-c语言表达">4.写出该程序对应的 C语言表达。</h3>
<pre><code>    int w = 3;
    int x = 7;
    int y = x + w;
</code></pre><h1 id="任务-2简单循环">任务 2：简单循环</h1>
<h2 id="1-输入程序program-2运行并回答问题">（1） 输入程序Program 2，运行并回答问题：</h2>
<p><img src="../pic/for1.png" alt=""></p>
<p>运行结果
<img src="../pic/for2.png" alt=""></p>
<h3 id="1用一句话总结程序的功能">1.用一句话总结程序的功能</h3>
<p>将X递减到1。</p>
<h3 id="2写出对应的-c-语言程序">2.写出对应的 c 语言程序</h3>
<pre><code>    int x = 3;
    while(x-1 != 0){
        x--;
    }
</code></pre><h2 id="2-修改该程序用机器语言实现-10981-输出结果存放于内存-y">（2） 修改该程序，用机器语言实现 10+9+8+..1 ，输出结果存放于内存 Y</h2>
<p>修改后的程序：</p>
<pre><code>    LOD X
    LOD Y
    ADD X
    STO Y
    LOD X
    SUB #1
    JMZ 18
    STO X
    JMP 0
    HLT
</code></pre><p>运行时：
<img src="../pic/for4.png" alt=""></p>
<p>运行结果：
<img src="../pic/for5.png" alt=""></p>
<h3 id="1写出-c-语言的计算过程">1.写出 c 语言的计算过程</h3>
<pre><code>    int x = 10;
    int y = 0;
    while(x &gt; 0){
        y = y+x;
        x--;
    }
</code></pre><h3 id="2写出机器语言的计算过程">2.写出机器语言的计算过程</h3>
<pre><code>00000000 00000100 10000001
00000010 00000100 10000010
00000100 00000000 10000001
00000110 00000101 10000010
00001000 00000100 10000001
00001010 00010001 00000001
00001100 00001101 00010010
00001110 00000101 10000001
00010000 00001100 00000000
00010010 00001111 00000000
</code></pre><h3 id="3用自己的语言简单总结高级语言与机器语言的区别与联系">3.用自己的语言，简单总结高级语言与机器语言的区别与联系。</h3>
<p>区别：高级语言更容易被人看懂，机器语言很难看懂</p>
<p>联系：机器语言和高级语言都可以实现顺序，选择和循环</p>
<h1 id="实验小结">实验小结</h1>
<p>使用CPU Simulator Applet能十分直观地理解CPU的运行过程。</p>
<ul class="pa0">
  
</ul>
<div class="mt6 instapaper_ignoref">
      
      
      </div>
    </div>

    <aside class="w-30-l mt6-l">




</aside>

  </article>

    </main>
    <footer class="bg-black bottom-0 w-100 pa3" role="contentinfo">
  <div class="flex justify-between">
  <a class="f4 fw4 hover-white no-underline white-70 dn dib-ns pv2 ph3" href="https://Hugh488.gitee.io/homework" >
    &copy;  Bian's blog 2020 
  </a>
    <div>














</div>
  </div>
</footer>

    

  <script src="/homework/dist/js/app.3fc0f988d21662902933.js"></script>


  </body>
</html>
